$(document).ready(function() {
    Ext.ns("Ext.hpfs.login"); // 自定义一个命名空间
    login = Ext.hpfs.login; // 定义命名空间的别名
    login = {
        login : ctx + "/login",
        main : ctx + "/main",
        findpwd : ctx + "/findpwd",
        register : ctx + "/register"
    };
    // 设置主题
    // Share.swapStyle('ext-all.css');
    // 用户登录Form
    login.loginFormPanel = new Ext.FormPanel({
        title : null,
        frame : false,
        width : 300,
        renderTo : 'login-win-div',
        bodyStyle : 'padding:5px',
        border : false,
        fieldDefaults : {
            labelAlign : 'top',
            labelWidth : 100
        },
        defaultType : 'textfield',
        defaults : {
            anchor : '100%'
        },
        items : [{
            name       : 'account',
            fieldLabel : '用户名:',
            id: 'user_tl',
            margin: '10 0'
        }, {
            name       : 'password',
            fieldLabel : '密码:',
            id:'pwd_tl',
            inputType  : 'password',
            margin: '10 0'
        }, {
            xtype         : 'combo',
            fieldLabel    : '公司:',
            margin: '10 0',
            name          : 'companyName',
            id            : 'companyCombo',
            queryMode     : 'local',
            editable      : false,
            emptyText     : 'Select a company...',
            valueField : 'companyId',
            displayField  : 'companyName',
            store : new Ext.data.Store({
				proxy: { 
					type: 'ajax', 
					url : ctx + '/getCompany',
					params:{},
					actionMethods : {
                        read : 'POST'
                    },
					reader: { 
						type: 'json', 
						totalProperty: '', 
						root: '' 
					} 
				}, 
				fields:['companyId','companyName'], 
				autoLoad:true 
            }),
            listeners : {
                expand : function(qe) {
                	Ext.getCmp('companyCombo').getStore().load({
                        params : {user_name : Ext.getCmp('user_tl').getValue()}
                    });
                },
                select : function(e) {
                	var companyId = e.value;                                        
                	Ext.state.Manager.set('Cxjava_companyId', companyId);
				},
        		specialkey : function(field, e) {
                    if (e.getKey() == Ext.EventObject.ENTER) {
                   	Ext.getCmp('loginbtn').fireEvent("click");
                    }  
        		}
            }
        }, {
            xtype: 'combobox',
            id:'choose_lang',
            name:'choose_lang',
            fieldLabel    : '语言:',
            margin: '10 0',
            value : lang,
            editable : false,
            store : new Ext.data.SimpleStore({ //填充的数据
    			fields : ['text', 'value'],
    			data : [['中文', 'zh_CN'],
    			        ['English', 'en']]
            }),
            valueField : 'value',
            displayField : 'text',
        	listeners : {
        		select : function(e) {
                    Ext.state.Manager.set('Cxjava_lang', this.value);
        		},
        		specialkey : function(field, e) {
                    if (e.getKey() == Ext.EventObject.ENTER) {
                    	Ext.getCmp('loginbtn').fireEvent("click");
                    }
        		}
        	}
        }, {
            xtype : 'checkboxgroup',
            margin: '10 0',
            columns : 3,
            items : [ {
                boxLabel : '记住账号',
                name : 'rememberAccount',
                canActivate : false, 
                pressed : false, 
                hidden : true, 
                listeners : {
                    check : function() {
                        if (!this.getValue()||this.getValue()) {
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberAccount').setValue(true);
                        }
                    }
                }
            }, {
                boxLabel  : '记住公司',
                name      : 'rememberCompany',
                listeners : {
                    check : function() {
                        if (!this.getValue()||this.getValue()) {
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberCompany').setValue(true);
                        }
                    }
                }
            }, {
                boxLabel : '记住密码',
                name : 'rememberPassword',
                hidden:true, 
                listeners : {
                    check : function() {
                        if (!this.getValue()||this.getValue()) {
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberAccount').setValue(true);
                            form.findField('rememberPassword').setValue(true);
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberCompany').setValue(true);
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberAccount').setValue(true);       
                        }
                    }
                }
            }, {
                boxLabel : '记住语言',
                name : 'rememberLang',
                listeners : {
                    check : function() {
                        if (!this.getValue()||this.getValue()) {
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberLang').setValue(true);
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberAccount').setValue(true);
                            form.findField('rememberPassword').setValue(true);
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberCompany').setValue(true);
                            var form = login.loginFormPanel.getForm();
                            form.findField('rememberAccount').setValue(true);    
                        }
                    }
                }
            } ]
        },{
        	xtype : 'form',
        	layout : {
				type : 'absolute'
			},
        	border : false,
        	width : 300,
        	height : 50,
        	items : [{
            	xtype : 'button',
            	id : 'loginbtn',
                text : '<span style="color:black;font-size:12px">登录</span>',
                width : 69,
                x : 145,
                y : 10,
                listeners : {
                	click : function() {
                    	var account = $(":input[name='account']").val();     
                     	Share.AjaxRequest({
        			 		url : ctx + '/getUserState',
        			 		params : {account : account},
        			 		callback : function(json) {
        			 			if (json.resultcode == '0') {
                                    var form = login.loginFormPanel.getForm();
                                    form.findField('rememberLang').setValue(true);
                                    var form = login.loginFormPanel.getForm();
                                    form.findField('rememberAccount').setValue(true);
                                    form.findField('rememberPassword').setValue(true);
                                    var form = login.loginFormPanel.getForm();
                                    form.findField('rememberCompany').setValue(true);
                                    var form = login.loginFormPanel.getForm();
                                    form.findField('rememberAccount').setValue(true);   
        							login.loginFun();
        							
        			 			} else{
        			 				Ext.Msg.alert("提示:","该用户被冻结，不能登录！ ");
        			 			    return;
        			 			}
        			 		},
        			 		falseFun : function(json) {Ext.Msg.alert("提示:","该用户被冻结，不能登录！");}
        			  	});                                        
                    }
                }
            }, {
            	xtype : 'button',
                text : '<span style="color:black;font-size:12px">重置</span>',
                width : 69,
                x : 220,
                y : 10,
                handler : function() {
                    login.loginFormPanel.getForm().reset();
                    $(":input[name='account']").focus();
                }
            } ]
        } ]
    });

    login.loginFun = function() {
        var form = login.loginFormPanel.getForm();
        var account = $(":input[name='account']").val();
        var password = $(":input[name='password']").val();
        var company = $(":input[name='companyName']").val();
        var c_lang = Ext.getCmp('choose_lang').value;
        if (account == "" || password == "" || company == "") {
            Ext.Msg.alert('提示', '请输入用户名和密码并选择所在公司.');
        } else {
            var cookiePassword = Ext.state.Manager.get('Cxjava_password');
            // 判断cookie中的密码
            password = cookiePassword == password ? password : Ext.MD5(password);
            // 发送请求
            Share.AjaxRequest({
                url : login.login,
                params : {
                    account : account,
                    password : password,
                    company : company,
                    lang : c_lang
                },
                showMsg  : false,
                callback : function(json) {
                    // 设置Cookie
                    var rememberAccount = form.findField('rememberAccount').getValue();
                    var rememberPassword = form.findField('rememberPassword').getValue();
                    var rememberCompany = form.findField('rememberCompany').getValue();
                    var rememberLang = form.findField('rememberLang').getValue();
                    Ext.state.Manager.set('Cxjava_r_account', rememberAccount);
                    Ext.state.Manager.set('Cxjava_r_password', rememberPassword);
                    Ext.state.Manager.set('Cxjava_r_company', rememberCompany);
                    Ext.state.Manager.set('Cxjava_account', account);
                    Ext.state.Manager.set('Cxjava_password', password);
                    Ext.state.Manager.set('Cxjava_company', company);  
                    Ext.state.Manager.set('Cxjava_lang', c_lang);
                    Ext.state.Manager.set('Cxjava_r_lang', rememberLang);
                    if (rememberAccount) {
                        Ext.state.Manager.set('Cxjava_r_account', '1');
                    } else {
                        Ext.state.Manager.set('Cxjava_r_account', '0');
                    }
                    if (rememberPassword) {
                        Ext.state.Manager.set('Cxjava_r_password', '1');
                    } else {
                        Ext.state.Manager.set('Cxjava_r_password', '0');
                    }
                    if (rememberCompany) {
                        Ext.state.Manager.set('Cxjava_r_company', '1');
                    } else {
                        Ext.state.Manager.set('Cxjava_r_company', '0');
                    }
                    if (rememberLang) {
                        Ext.state.Manager.set('Cxjava_r_lang', '1');
                    } else {
                        Ext.state.Manager.set('Cxjava_r_lang', '0');
                    }
                    Ext.state.Manager.set('Cxjava_hasLocked', false);
                    Ext.state.Manager.set('Cxjava_license_reminder', json.o);//证书剩余天数
                    location.href = login.main;           
                },
                falseFun : function(json) {//失败后想做的个性化操作函数
                    if (json.msg.indexOf('密码错误') > -1) {
                        $("#password").focus().val('');
                        return;
                    }
                }
            });
        }
    };
    // 根据cookie初期化form
    login.initLoginForm = function() {
        // 取得cookie
        var cookieAccount = Ext.state.Manager.get('Cxjava_account');
        var cookiePassword = Ext.state.Manager.get('Cxjava_password');
        //    var cookieAutoLogin = Ext.state.Manager.get('Cxjava_autoLogin');
        var cookieCompany = Ext.state.Manager.get('Cxjava_company');
        var r_account = Ext.state.Manager.get('Cxjava_r_account');
        var r_password = Ext.state.Manager.get('Cxjava_r_password');
        var r_company = Ext.state.Manager.get('Cxjava_r_company');
        var r_lang = Ext.state.Manager.get('Cxjava_r_lang');
        var c_lang = Ext.state.Manager.get('Cxjava_lang');
        var form = login.loginFormPanel.getForm();
        // 账号
        if (r_account=='1') {
            form.findField('account').setValue(cookieAccount);
            form.findField('rememberAccount').setValue(true);
        }
        // 密码
        if (r_password=='1') {
            form.findField('password').setValue(cookiePassword);
            form.findField('rememberPassword').setValue(true);
        }
        // 公司
        if (r_company=='1') {
            form.findField('companyName').setValue(cookieCompany);
            form.findField('rememberCompany').setValue(true);
        }
        // 语言
        if (r_lang=='1') {
            form.findField('choose_lang').setValue(c_lang);
            form.findField('rememberLang').setValue(true);
        } else {
        	form.findField('choose_lang').setValue(lang);
        }
        // 自动登录
        //        form.findField('autoLogin').setValue(cookieAutoLogin);
        //        if (cookieAutoLogin == true) {
        //            Ext.getCmp("login-button").handler();
        //        }   
    };
    // 根据cookie初期化form
    login.initLoginForm();
    //监听事件
    var events = "beforecopy beforepaste beforedrag contextmenu selectstart drag paste copy cut dragenter";
    $("#account").bind(events, function(e) {
        return false;
    });
    $("#password").bind(events, function(e) {
        return false;
    });
});